草庐IT

Android GoogleMap 或 SupportMapFragment - 空指针异常

全部标签

pointers - 如何在 go 中获取字符串变量的数据指针?

我想获取一个字符串变量的数据指针(如c++中的string::c_str())以传递给一个c函数,但我发现这不起作用:packagemain/*#includevoidPrintln(constchar*str){printf("%s\n",str);}*/import"C"import("unsafe")funcmain(){s:="hello"C.Println((*C.char)(unsafe.Pointer(&(s[0]))))}编译错误信息是:“无法获取s[0]的地址”。这没问题,但我怀疑它会导致不必要的内存应用。有没有更好的方法获取数据指针?C.Println((*C.ch

pointers - Go:是否可以返回指向函数的指针

对于下面的代码:packagemainimport"fmt"typeintFuncfunc(int)intvart=func()intFunc{a:=func(bint)int{returnb}returna}funcmain(){fmt.Println(t()(2))}有没有办法直接返回指向函数的指针而不是函数?(类似于return&a)?Playground在这里:https://play.golang.org/p/IobCtRjVVX 最佳答案 是的,只要你正确转换类型:https://play.golang.org/p/3R

string - 获取指向字符串中第一个字符的 *uint8 指针

我正在尝试使用unsafe.Pointer将哈希函数从C移植到Go。我需要获取指向key字符串第一个字符的指针。我尝试了&(hello[0])和&hello[0]但失败了。 最佳答案 stringGo中的值是不可变的,因此不是addressable;所以你不能获取它的rune或字节的地址。如果可以,您可以修改指向的值,从而修改string的内容值(value)。在Go中还有nopointerarithmetic.你能做的很简单indexstring,索引string索引其字节(以UTF-8编码形式,这就是Go在内存中存储string

pointers - 如何使用指向该 slice 的指针获取 slice 项

有一个整数slice和一个接受指向slice的指针作为参数的函数。mainSlice:=[]int{0,8,5,4,6,9,7,1,2,3,6,4,5,7}doSmthWithSlice(mainSlice)有没有什么方法可以使用指向slice的指针来获取slice项,但无需将指针指向的值复制到新slice中?funcdoSmthWithSlice(slcPtr*[]int){*slcPtr[3]=777//thisdoesNOTworks,because*[]intdoesnotsupportindexing//Don'twanttoimplementit//likethisnewS

pointers - golang 类型断言,接口(interface){}(指针)和接口(interface){}(对象)有什么区别?

为什么我要为接口(interface)由指针赋值的类型断言结果赋值,而当我为由结构对象赋值的接口(interface)赋值时出现“无法赋值”错误?这是我的代码:packagemainimport("fmt")typePersoninterface{SayHi()}typeStudentstruct{idintnamestring}func(sStudent)SayHi(){fmt.Println("hi,iam",s.name,"myidis:",s.id)}funcmain(){p1:=Person(&Student{id:123,name:"William"})p1.SayHi()

go - 如果异常断开,Websocket 会卡住

我创建了一个简单的websocket来发布JSON流。我大部分时间都工作正常,除了少数情况,我认为在循环遍历客户端向它们发送消息时,它卡在异常断开连接的客户端上。我可以在此代码中添加什么措施来缓解它?Client.goimport("github.com/gorilla/websocket")typeclientstruct{socket*websocket.Connsendchan*Message}func(c*client)read(){deferc.socket.Close()for{_,_,err:=c.socket.ReadMessage()iferr!=nil{log.In

Go - 访问指针结构的字段

我有一个包含密码和电子邮件等敏感字段的用户结构。对于User的公共(public)实例,例如事件页面上的公共(public)RSVP,我想排除敏感字段出现在我的JSON输出中,即使它们是空白的。基于此article,我正在使用复合结构来屏蔽不需要的字段。问题:在我的数据库函数中进行rows.Scan期间,如何正确访问复合结构中指针结构的字段?由于找不到字段,我收到了紧急错误。我的常规用户结构:typeUserstruct{IDint`json:"id"`FirstNamestring`json:"firstname"`LastNamestring`json:"lastname"`Reg

golang迭代map时,如何获取key作为指针?

目前我正在存储一个映射,其键是一个Struct(MyIntC)。我想以slice的形式检索map中的所有键。slice将是指向映射键的指针。这样就没有多个key的副本。当我在这里尝试时(https://play.golang.org/p/bclmCh_YV5),它不工作。slice中的所有元素将指向迭代的最后一个映射键元素。为什么会这样?我该如何克服这个问题?注意:我怀疑这与Sliceofstructsvsasliceofpointerstostructs非常相似,其中我总是使用局部变量地址。谢谢。 最佳答案 关于范围循环中与k相关

Go:指向类型的指针与接口(interface)不兼容

我不确定如何正确地表述问题。我有2个go代码片段,它们应该做完全相同的事情,但显然它们没有,因为一个工作,另一个不工作(不编译)funcwriteSomething(writer*io.Writer){}funcmain(){file,_:=os.Create("error.log")varlogWriterio.Writer=filewriteSomething(&logWriter)}funcmain2(){file,_:=os.Create("error.log")writeSomething(&file)}Playgroundmain()有效而main2()无效。prog.go

go - 将指针变成接口(interface)后如何检查指针

如何比较转换为接口(interface)的指针?packagemainimport("fmt")typeContainerInterfaceinterface{Check(ContentInterface)bool}typeContentInterfaceinterface{BelongsTo(ContainerInterface)bool}typeBaseContainerstruct{}func(container*BaseContainer)Check(contentContentInterface)bool{returncontent.BelongsTo(container)}